package com.ljj.service;

import com.spire.pdf.PdfCompressionLevel;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.exporting.PdfImageInfo;
import com.spire.pdf.graphics.PdfBitmap;

public class PdfCompress {
    public static void main(String[] args) {
        //创建 PdfDocument 类的对象
        PdfDocument doc = new PdfDocument();
        //加载 PDF 文档
        doc.loadFromFile("input/210道面试题.pdf");
        //将IncrementalUpdate设置为false
        doc.getFileInfo().setIncrementalUpdate(false);
        //将压缩级别设置为最佳
        doc.setCompressionLevel(PdfCompressionLevel.Best);
        //循环遍历文档中的页面
        for (int i = 0; i < doc.getPages().getCount(); i++) {
            //获取指定页面
            PdfPageBase page = doc.getPages().get(i);
            //获取每个页面的图像信息集合
            PdfImageInfo[] images = page.getImagesInfo();
            //遍历集合中的项目
            if (images != null && images.length > 0)
                for (int j = 0; j < images.length; j++) {
                    //获取特定图片
                    PdfImageInfo image = images[j];
                    PdfBitmap bp = new PdfBitmap(image.getImage());
                    //设置压缩质量
                    bp.setQuality(20);
                    //将原始图像替换为压缩图像
                    page.replaceImage(j, bp);
                }
            //保存文件
            doc.saveToFile("output/压缩210道面试题.pdf");
            doc.close();
        }
    }
}
